-
Notifications
You must be signed in to change notification settings - Fork 2
Merge develop into main #505
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
+10,719
−1,952
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Set the active tab to "instruments" for instrument detail page - Removed active style to unify active navtab style refs: #391
- Removed existing google translate widge on initialization - Added event listeners for navigation refs: #394
fix: instrument navbar style
fix: add navigation support for google translate
- Google translate doesn't work well with numbers. The best practice is to only put human-readable part in a separate span. - This is needed to make sure that all the hbs items can be translated well. refs: #393
fix: move count num outside of hbs facet list for google translate
fix: change detail page title to instrument name
…n UMIL_db" This reverts commit 82900f6.
- Added test for `cookies.ts`, `NameValidator.ts`, and `WikidataService.ts`. - Added Makefile for running frontend tests using Docker. - Added CI test for frontend unit test refs: #398
- Updated all related functions
- Removed id selector for language btns on home page as in there are two of each, one for desktop and one for mobile - Added `.desktop` and `.mobile` to distinguish the layout - Updated event listeners for this change
fix: handle multiple Go To Page inputs
fix: avoid errors by using edismax for Solr contextual queries
fix: limit table height only if more than 5 labels
Improve RTL/LTR support and prevent unwanted translations in UI
fix: add http error handling
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cursor Bugbot has reviewed your changes and found 5 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
web-app/django/VIM/apps/instruments/management/commands/import_languages.py
Show resolved
Hide resolved
- Add CreateInstrument Django view with form handling and validation - Implement frontend UI with CreateInstrument TypeScript module - Add CreateInstrumentValidator for frontend form validation - Add CreateInstrumentManager for API interactions and DatabaseService - Create error_codes and exceptions modules for structured error handling - Add migration 0012 for instrument creation feature - Update InstrumentName and AVResource models to support creation workflow - Update management commands (import, download, index) for creation compatibility - Update instrument views and templates with creation UI - Update Docker Compose and nginx configurations - Add comprehensive test suite for creation workflows ref: #406
- Add Django DELETE endpoint with permission checks for user-created instruments - Add confirmation modal template and delete button on detail page - Add TypeScript DeleteInstrumentManager for modal interaction and API call - Add Solr cleanup on successful deletion via transaction.on_commit - Restrict delete access to instrument creator and superusers
- Create NameRowManager class to extract duplicated name row management logic (row creation, RTL support, add/remove rows, form data collection) - Refactor AddNameManager to use NameRowManager via composition - Refactor CreateInstrumentManager to use NameRowManager via composition - Move AddName publish logic from entry point into AddNameManager for consistency - Fix DeleteNameManager to use shared getCsrfToken utility instead of private method - Update entry points (AddName.ts, CreateInstrument.ts) to follow consistent initialization pattern
Feature: create/delete instruments
github-actions bot
pushed a commit
that referenced
this pull request
Feb 10, 2026
# 1.0.0 (2026-02-10) ### Bug Fixes * add `notranslate` to dropdown language menu ([c4b6836](c4b6836)) * add `notranslate` to the `About` page ([52f64c3](52f64c3)) * add `notranslate` to the shown search query in instruments page ([ae7e4ff](ae7e4ff)) * add `notranslate` to username in the navbar drop down ([5b7e3cd](5b7e3cd)) * add comments and changed ltr-keep to force-ltr ([9845583](9845583)) * add error handling to instrument import in E2E test ([e28d0c2](e28d0c2)) * add header to API call & resolve update_or_create conflicts ([09d459b](09d459b)), closes [#385](#385) * add html direction null check ([f8656f3](f8656f3)), closes [/github.com//pull/505#discussion_r2723185618](https://github.com//github.com/DDMAL/UMIL/pull/505/issues/discussion_r2723185618) * add http error handling ([77f6f50](77f6f50)) * add navigation support for google translate ([20558a5](20558a5)), closes [#394](#394) * add notranslate to UMIL name ([b52ea3b](b52ea3b)), closes [#433](#433) * add redirect authenticated users to custom login ([333d8dc](333d8dc)) * add solr indexing & error handling ([f75e80e](f75e80e)) * add space between colon for ID and InstrumentName ([1eee976](1eee976)) * add wikidata logo to footer ([6de1381](6de1381)), closes [#220](#220) * added notranslate to UMIL name ([c72e94f](c72e94f)) * AddName.ts formatting ([fe41bf9](fe41bf9)) * adjust 404 decor image ([fc7ade2](fc7ade2)) * adjust form fields to only allow user input for language, name and source ([76df183](76df183)), closes [#245](#245) * adjust model by assigning default contributor ([317c8d5](317c8d5)), closes [#323](#323) * adjust styles for user account btn in the navbar ([c6415a3](c6415a3)), closes [#135](#135) * adjust table direction when translated to rtl ([d2329ac](d2329ac)) * align remove button with input fields ([427adbb](427adbb)), closes [#245](#245) * allow admin to delete any name ([5c53c1c](5c53c1c)) * allow user to enter multiple names of the same language ([7521afb](7521afb)) * always returning 400 error in delete function ([7762170](7762170)) * always set instrument label value ([6669d84](6669d84)) * apply flexible compression ratio ([6c03c05](6c03c05)), closes [#152](#152) * associate add-name url to a specific instrument pk ([c33041d](c33041d)), closes [#206](#206) * **base template:** remove opening slash from script src paths ([2d4e533](2d4e533)) * bootstrap modal API ([36c0ac8](36c0ac8)), closes [#255](#255) * button styling and formatting ([cd92d8f](cd92d8f)), closes [#255](#255) * change "contributor" back to "null=False" ([5f5e9cb](5f5e9cb)), closes [#341](#341) * change button colouring to fit theme ([0dd702f](0dd702f)), closes [#245](#245) * change detail page title to instrument name ([b2fc4f9](b2fc4f9)), closes [#400](#400) * change image downloading dir & image url ([98dd53e](98dd53e)), closes [#138](#138) * change select text color on hover ([7c464b5](7c464b5)) * check for unverified accounts before form validation ([806c686](806c686)) * cleanup & update instrument data ([12325d8](12325d8)), closes [#183](#183) * clear stale pending verification session for unverified account ([97e4558](97e4558)) * convert `LanguageList.js` to TypeScript ([9855745](9855745)) * convert javascript to typescript ([3abc8c3](3abc8c3)), closes [#255](#255) * convert webpage language badge to tooltip ([8519b8b](8519b8b)), closes [#111](#111) * correct link to mimo class ([74b20be](74b20be)), closes [#264](#264) * correct syntax for error message ([086d662](086d662)), closes [/github.com//pull/505#discussion_r2723185628](https://github.com//github.com/DDMAL/UMIL/pull/505/issues/discussion_r2723185628) * de-activate dropdown on click-away && fix tooltip ([514c4dd](514c4dd)), closes [#135](#135) * decode cookie in readCookie to match writeCookie ([cc2a00b](cc2a00b)) * delete name exceptions ([5413d4c](5413d4c)) * **detail.html:** add notranslate to alias fields ([b699533](b699533)) * **detail.html:** add notranslate to alias fields ([aa3b6bf](aa3b6bf)) * diable translate of label ([0b5a7ce](0b5a7ce)), closes [#272](#272) * disable translate for title ([529ba56](529ba56)), closes [#287](#287) * display label in active language (not alias) ([973252c](973252c)), closes [#245](#245) * djlint format ([7d77c9b](7d77c9b)) * duplicate key in vite config ([71495d5](71495d5)) * edit button text ([6323c23](6323c23)), closes [#231](#231) * edit frontend_format.yml ([5e40866](5e40866)), closes [#188](#188) * enable baseURL inheritance in playwright setup project ([f0cadc2](f0cadc2)) * extract umil_label from filtered list ([d3ef2a0](d3ef2a0)), closes [#334](#334) * fix & refactor hbs ([bae103a](bae103a)), closes [#265](#265) [#230](#230) * fix broken image links ([4e873d2](4e873d2)), closes [#290](#290) * fix button bugs & optimize query ([e9d974e](e9d974e)) * fix missing "unclassified" ([670e3e2](670e3e2)), closes [#370](#370) * fix poetry.lock & settings.py ([f49ebe8](f49ebe8)) * format migration 0003 with black ([29861c2](29861c2)) * handle multiple `Go To Page` inputs ([afefb69](afefb69)), closes [#474](#474) * **import_languages.py:** add User-Agent header to prevent request blocks ([eb456a8](eb456a8)), closes [#416](#416) * **import_languages.py:** add User-Agent header to prevent request blocks ([f9f20d6](f9f20d6)) * improve google translate perf across all browsers ([7a1e226](7a1e226)), closes [#223](#223) * improve instrument table UI ([1e498c5](1e498c5)), closes [#387](#387) * improve solr search ([6f73848](6f73848)) * improve solr search ([2dafadb](2dafadb)), closes [#186](#186) * index add/delete names ([0b46f56](0b46f56)), closes [#510](#510) * instrument detail formatting ([5b3539c](5b3539c)) * instrument label on modal ([548fb17](548fb17)), closes [#245](#245) [#255](#255) * instrument navbar style ([ed9fa10](ed9fa10)), closes [#391](#391) * javascript to typescript and bootstrap modal API ([4beb32c](4beb32c)), closes [#255](#255) * keep contributor `null=True` temporarily before data import ([19a94d4](19a94d4)) * limit table height only if more than 5 labels ([00e17aa](00e17aa)), closes [#500](#500) * make addName modal rtl-friendly ([a08aef7](a08aef7)) * make google translate selector fixed width ([e037be3](e037be3)), closes [#133](#133) * management commands & migrations fix ([c14de8a](c14de8a)), closes [#138](#138) * merge migrations to resolve conflict ([9209599](9209599)), closes [#147](#147) * missing bracket ([8f74f43](8f74f43)) * modify prettier to user django/jinja formatter for .html files ([a72d6bc](a72d6bc)) * move count num outside of hbs facet list for google translate ([5b2aa55](5b2aa55)), closes [#393](#393) * move inline script from `addName.html` to `AddName.ts` ([b11fc31](b11fc31)) * move script to top ([290266e](290266e)) * only load modal once ([9362c17](9362c17)), closes [#245](#245) * prettier and black formatting ([4662e95](4662e95)) * prevent bottom imgs being covered ([cb8bdc8](cb8bdc8)), closes [#366](#366) * python format ([5c3d648](5c3d648)) * re-design account-related pages ([0f9bef8](0f9bef8)), closes [#131](#131) * re-design login page ([7137f50](7137f50)), closes [#125](#125) * refactor LanguageList.js ([0a7ddbd](0a7ddbd)) * refer to AddName.ts, not InstrumentDetail.ts ([ee1c087](ee1c087)) * Reformat status field to conform with new terminology ([cf325f9](cf325f9)), closes [#240](#240) * remove detail.css and fix button ([a66b721](a66b721)), closes [#255](#255) * remove email param in `extractVerificationUrl` ([42067e3](42067e3)) * remove exception ([e17460a](e17460a)) * remove features which don't work ([801fe44](801fe44)), closes [#176](#176) * remove Google Tag installation & add GTM ([29a11fa](29a11fa)), closes [#314](#314) * remove InstrumentAlias ([aee2cf2](aee2cf2)), closes [#206](#206) * remove print test statements ([8938122](8938122)) * remove reference to start-up.sh ([053a772](053a772)) * remove type indicator in AddName modal confirmation ([291a4a6](291a4a6)) * remove UMIL icon ([d5dfb18](d5dfb18)), closes [#262](#262) * remove unnecessary settings in `.djlintrc` ([730324a](730324a)) * remove useless links ([bb3d9f5](bb3d9f5)), closes [#168](#168) * removed the unused variable: fetched_dir ([4a334dd](4a334dd)) * rename direction to html_direction in the Language model and enhanced the import_language workflow ([aa48ad8](aa48ad8)) * rename verified_instruments view to approved_instruments ([0d0fce2](0d0fce2)), closes [#245](#245) * rename view to better describe class (edit_wikidata to verified_instruments) ([5c0b02f](5c0b02f)), closes [#228](#228) [#206](#206) * reorder language list ([b87b6ee](b87b6ee)), closes [#210](#210) * repair failing tests by correcting instruments migration chain ([d0d0353](d0d0353)), closes [#445](#445) * replace "print" with "self.stdout.write" ([b8e649c](b8e649c)), closes [#157](#157) * replace list with string in .djlintrc ([9c96ef7](9c96ef7)), closes [#171](#171) * replace lowercases with upper cases in urls ([20a944d](20a944d)), closes [#167](#167) * replace VIM with UMIL ([fd2d7db](fd2d7db)), closes [#98](#98) * resolve server 500 error from instrument detail ([21b558a](21b558a)), closes [#257](#257) * search using solr ([b11912c](b11912c)) * set cooldown on expiration to prevent race condition ([99eb613](99eb613)) * show all active users on home page ([da3eebd](da3eebd)) * standardize instrument titles using original Wikidata capitalization ([c5a29f4](c5a29f4)), closes [#425](#425) * sync button text on home page ([324a08a](324a08a)) * synchronize radio btn selections between two pagination number settings ([57a81c6](57a81c6)), closes [#135](#135) * **ui:** add pulse effect to start btn ([c1a70b6](c1a70b6)) * **ui:** adjust layout for alert message ([4ff0092](4ff0092)) * **ui:** align navbar to center ([2c5fe3d](2c5fe3d)) * **ui:** re-design 404 page ([5b5c2c7](5b5c2c7)), closes [#123](#123) * unify search query param to `query` ([0666b6e](0666b6e)), closes [#320](#320) * update auth setup and optimize auth test ([0462f60](0462f60)) * update data parsing to reflect expected json request body ([a1f9285](a1f9285)), closes [#206](#206) * update image placeholder path ([259b0ed](259b0ed)), closes [#218](#218) * update setCookie & add deleteCookie for safari ([06846f1](06846f1)) * update test mode environment variable for instrument import command ([ad17cc4](ad17cc4)) * update translated-rtl and force-ltr to the nested version ([4fff599](4fff599)) * **update_umil_db.py:** check for duplicate name in query and umil_db ([d4cdd78](d4cdd78)) * use `[@title](https://github.com/title)` instead of tooltip for better accessibility ([7243806](7243806)), closes [#112](#112) * use Bootstrap prebuilt features and align stack layout with window layout structure ([df56332](df56332)) * use class selector for language btns on home page ([0bc9d36](0bc9d36)) * use django's built in get_object_or_404 method ([4f64875](4f64875)) * use edismax to support special characters in Solr contextual queries ([753b43f](753b43f)), closes [#413](#413) * validate next parameter to prevent open redirect attacks ([bc1cb80](bc1cb80)) * validation text and publish message formatting ([88d79b4](88d79b4)), closes [#245](#245) * verify password for existing unverified accounts when register ([d3742b3](d3742b3)) ### Features * add `force-rtl` utilities for forced-ltr contexts ([d49e147](d49e147)) * add animation on homepage loading ([e518c9f](e518c9f)), closes [#119](#119) * add bar charts for intruments and languages ([e373910](e373910)), closes [#185](#185) * add button that triggers add_name modal ([c49d1a6](c49d1a6)), closes [#245](#245) * add decor bg image to home page ([4b80b77](4b80b77)) * add email validation to login and registration form ([393e01a](393e01a)), closes [#386](#386) * add Google Analytics tag ([ebe37f8](ebe37f8)), closes [#285](#285) * Add InstrumentName object to database ([21210c0](21210c0)), closes [#206](#206) * add jump-to-top button to instruments & detail page ([0166f32](0166f32)), closes [#300](#300) * add max for Go To Page in pagination ([c163eaa](c163eaa)) * add name stats to home page ([0ff5322](0ff5322)), closes [#185](#185) * add new instrument name ([c653042](c653042)), closes [#245](#245) * add parameter to registration redirect for GA tracking ([a6fb171](a6fb171)), closes [#285](#285) * add RTL language support to instrument detail page ([1cad557](1cad557)), closes [#427](#427) * add RTL support and ltr-keep override for Google Translate in scss ([98553bf](98553bf)) * add rtl/ltr direction support for adding instrument name ([9403fba](9403fba)) * add stats number to home page ([b565adb](b565adb)), closes [#185](#185) * add status column to instrument detail page that displays the `verification_status` ([692813d](692813d)), closes [#334](#334) * adjust css for add instrument button ([47197be](47197be)), closes [#245](#245) * alias-label tracking data model change ([4a90b23](4a90b23)) * allow superuser to delete instrument names on upload page ([5dada8f](5dada8f)), closes [#247](#247) * allow user to delete their own instrument name entries ([37b8302](37b8302)), closes [#245](#245) * **auth:** add email verification for user registration ([b5b14d5](b5b14d5)), closes [#402](#402) * **auth:** add email verification workflow with rate limiting ([944690d](944690d)), closes [#440](#440) * Authorize UMIL client (OAuth) ([c514aeb](c514aeb)), closes [#228](#228) [#206](#206) * auto set google translate language on homepage btn ([d4460f4](d4460f4)), closes [#361](#361) * bootstrap badge styling of verification status ([f9e0ac1](f9e0ac1)), closes [#334](#334) * button to submit to wikidata ([669377d](669377d)), closes [#228](#228) [#206](#206) * create InstrumentAlias model, with FK InstrumentName ([d7ecb4f](d7ecb4f)), closes [#206](#206) [#205](#205) * custom pagination for Solr search result ([d64cd30](d64cd30)), closes [#330](#330) * define modal template ([90014fe](90014fe)), closes [#245](#245) * define post request for instrument detail page. ([7436858](7436858)), closes [#245](#245) * differentiate "under review" from "needs additional review" ([38ad15e](38ad15e)), closes [#334](#334) * differentiating between label and alias ([a129e22](a129e22)), closes [#206](#206) * edit wikidata frontend ([06f1fce](06f1fce)), closes [#247](#247) * edit wikidata instrument names with verified data entries ([9801e12](9801e12)) * **error-handling:** custom 404 handler ([817f297](817f297)), closes [#100](#100) [PR#102](https://github.com/PR/issues/102) * force left-to-right for the French content ([bdc6bc0](bdc6bc0)) * function to add new name entry to UMILdb ([1e45b1f](1e45b1f)), closes [#245](#245) * implement functions to add label with/without alias, or only add alias ([91c4c79](91c4c79)), closes [#206](#206) [#205](#205) * import labels in more languages ([2c77613](2c77613)), closes [#277](#277) * import wikidata language list ([2748205](2748205)), closes [#157](#157) * init img convert & compress for gallery view ([be6e90f](be6e90f)), closes [#138](#138) * init instrument deletion feature ([ca9a723](ca9a723)) * initialize instrument detail page ([ca06214](ca06214)), closes [#32](#32) [#33](#33) * InstrumentName fields ([ed0c907](ed0c907)), closes [#206](#206) * **instruments:** init instrument creation feature ([4f6680e](4f6680e)), closes [#406](#406) * javascript function to check if user input already exists on wikidata ([c08c781](c08c781)), closes [#245](#245) * reference same url for adding and deleting instrument names ([4737eef](4737eef)) * saving name to database ([e7af08b](e7af08b)), closes [#206](#206) * search bar ([24508d0](24508d0)), closes [#186](#186) * search using pysolr ([5bfae28](5bfae28)), closes [#186](#186) [#196](#196) * set all the default values in Statistics Section to 0 ([677e9b2](677e9b2)) * show aliases in detail page ([2f668df](2f668df)), closes [#286](#286) [#365](#365) * show label & aliases on instrument page ([d07ab53](d07ab53)), closes [#378](#378) * solr query for instruments ([5f9dc7c](5f9dc7c)), closes [#186](#186) * status viewing permissions ([48546f9](48546f9)), closes [#334](#334) * update instr list & increase instr name lgth ([7105e67](7105e67)), closes [#145](#145) * update instrument name with boolean flag indicating new data (is_verified) ([232c5df](232c5df)), closes [#206](#206) [#205](#205) * update InstrumentName to indicate alias with boolean flag ([f92f538](f92f538)), closes [#206](#206) [#205](#205) * update language list ([719e930](719e930)), closes [#157](#157) * use django admin to restrict user editing access ([280c48d](280c48d)), closes [#206](#206) [#215](#215) * verification status info modal ([fdffd73](fdffd73)), closes [#334](#334) * view new verified InstrumentNames ([33832e8](33832e8)) * wikibase connection settings ([56401f7](56401f7)), closes [#254](#254) ### Performance Improvements * reduce Solr queries from 3 to 2 ([d95cc41](d95cc41)) * remove redundant language code query ([52444b9](52444b9)) ### Reverts * Revert "fix: instrument label on modal" ([57eefdf](57eefdf))
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR merges the latest changes from
developintomain. This should trigger the latest release-deployment workflow described in https://github.com/DDMAL/UMIL/wiki/Deployment-%26-ReleaseNote
Bold highlights denote major areas.
mainand production deploy workflow with version selection, validation, rollback to last deployed, and docker build/up; fix CI build formattingdocker-compose-test.yml, test dataset, and.envtest DB varsLanguage.html_directionwith migration; enrich language import (headers, SPARQL for text direction); instrument import uses small dataset in test modeedismax; avoid title-casing names; dedupe name additionsWritten by Cursor Bugbot for commit a5ff62c. This will update automatically on new commits. Configure here.